diff options
| author | Adam Soltys <[email protected]> | 2024-09-25 12:50:46 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2024-09-25 12:50:46 -0700 |
| commit | 3be85cc511220725bfff7add3a6cb4927f73b15c (patch) | |
| tree | 1768a9f0a25c2ee0a847d5ce0174ab3cfcf6ba77 /src/routes/(app)/invoice/[id]/[email protected] | |
| parent | 396535514c4fe00e872e5cc5af0a504e923736bb (diff) | |
| download | coinos-ui-3be85cc511220725bfff7add3a6cb4927f73b15c.tar.gz coinos-ui-3be85cc511220725bfff7add3a6cb4927f73b15c.zip | |
invoice fixes
Diffstat (limited to 'src/routes/(app)/invoice/[id]/[email protected]')
| -rw-r--r-- | src/routes/(app)/invoice/[id]/[email protected] | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/routes/(app)/invoice/[id]/[email protected] b/src/routes/(app)/invoice/[id]/[email protected] new file mode 100644 index 00000000..db14b046 --- /dev/null +++ b/src/routes/(app)/invoice/[id]/[email protected] @@ -0,0 +1,115 @@ +<script> + import { SvelteToast } from "@zerodevx/svelte-toast"; + import { onDestroy, onMount } from "svelte"; + import { close, connect, send } from "$lib/socket"; + import { + last, + invoice, + request, + ndef, + passwordPrompt, + password, + pin, + } from "$lib/store"; + import { page } from "$app/stores"; + import { browser } from "$app/environment"; + import LoadingSplash from "$comp/LoadingSplash.svelte"; + import AppHeader from "$comp/AppHeader.svelte"; + import Invoice from "$comp/Invoice.svelte"; + import Password from "$comp/Password.svelte"; + import { getCookie, warning, protectedRoutes } from "$lib/utils"; + import { t, locale, loading } from "$lib/translations"; + import { goto, onNavigate } from "$app/navigation"; + + export let data; + + let { generate, rate, user, subject, token, rates } = data; + + $: update(data); + let update = (data) => { + ({ rate, user, subject, token, rates } = data); + }; + + onMount(async () => { + if (browser) { + checkSocket(); + $pin = getCookie("pin"); + + if (window.NDEFReader && user.nfc) { + try { + $ndef = new NDEFReader(); + await $ndef.scan(); + + $ndef.addEventListener("readingerror", (e) => { + console.log("nfc error", e); + }); + + $ndef.addEventListener("reading", ({ message, serialNumber }) => { + goto(`/send/${message}`); + }); + } catch (error) { + console.log("Argh! " + error); + } + } + } + }); + + $: browser && connect(token); + + let lost, + checkTimer, + expireTimer, + counter = 0; + + let checkSocket = () => { + counter++; + lost = Date.now() - $last > 30000; + if (lost) connect(token); + if (counter > 5) { + send("heartbeat", token); + counter = 0; + } + + checkTimer = setTimeout(checkSocket, 1000); + }; + + onDestroy(() => { + if (browser) { + close(); + clearTimeout(checkTimer); + clearTimeout(expireTimer); + } + }); +</script> + +{#if browser && user && $passwordPrompt} + <Password {user} /> +{/if} + +<svelte:head> + {#if subject} + <title>coinos - {subject.username}</title> + <meta name="lightning" content={`lnurlp:${subject.username}@coinos.io`} /> + {:else} + <title>coinos</title> + {/if} + + {#if subject?.profile} + <meta name="og:image" content={`/api/public/${subject.profile}.webp`} /> + {:else} + <meta property="og:image" content="/images/logo.webp" /> + {/if} +</svelte:head> + +<SvelteToast options={{ reversed: true, intro: { y: 192 } }} /> + +<main class="pb-20"> + <AppHeader {user} {subject} /> + {#if !$loading} + <slot /> + {/if} +</main> + +{#if $invoice} + <Invoice {user} /> +{/if} |
